import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

public class LiczbaNewTest {

	Liczba liczba;
	
	//***************************
	@Before
	public void setUp() {
		liczba = new Liczba();
	}
	
	//***************************
	@After
	@Ignore
	public void clean() {
		
	}
	
	//***************************
	@Test
	public void testLiczba() {
		assertNotNull("Creating of object Liczba failed",liczba); // I
		assertTrue("Wrong number value after default constructor.",liczba.number == 0);
	}

	//***************************
	@Test
	public void testLiczbaInt() {
		assertNotNull("Creating of object Liczba failed",liczba);
		
		try {
			liczba = new Liczba(5);
			assertFalse("Wrong number value after constructor with parameter.", liczba.number != 5);
		} catch (LiczbaException e) {}
		
		try {
			liczba = new Liczba(-5);
			fail("Not natural number should generate exception (Constructor with parameter).");
		} catch (LiczbaException e) {}
		
		try {
			liczba = new Liczba(0);
			assertEquals("Constructor with 0 parameter not working", 0, liczba.number);
		} catch (LiczbaException e) {}
	}

	//***************************
	@Test(timeout = 1)
	public void testGetNumberWithBase() throws LiczbaException {
		liczba = new Liczba(5);
		liczba.getNumberWithBase(5);
	}
	
	//***************************
	@Test(expected = LiczbaException.class)
	public void LiczbaExceptionTest() throws LiczbaException {
		liczba = new Liczba();
		liczba.number = -45;
		liczba.getNumberWithBase(5);
	}
	
	// BArdzo konstruktywny komentarz

}
